SPB Git forge

spb/spb-cloud

Public
10commits 1branches 0releases
3.2 MBsize
maindefault branch
yesterdaylast push
JavaScript 56.7% TypeScript 42.6%
1.4 KB · 46 lines typescript
Raw Blame History
1import { NextRequest, NextResponse } from "next/server";2import { prisma } from "@/lib/prisma";3import { saveVersion, restoreVersion } from "@/lib/storage";4import { logActivity } from "@/lib/activity";56export async function POST(7  request: NextRequest,8  { params }: { params: { id: string; versionId: string } }9) {10  const file = await prisma.file.findUnique({ where: { id: params.id } });11  const version = await prisma.fileVersion.findUnique({12    where: { id: params.versionId },13  });1415  if (!file || !version || version.fileId !== params.id) {16    return NextResponse.json({ error: "Not found" }, { status: 404 });17  }1819  // Save current as new version first20  const versionCount = await prisma.fileVersion.count({ where: { fileId: file.id } });21  const currentVersion = await saveVersion(file.storagePath, file.name);2223  await prisma.fileVersion.create({24    data: {25      fileId: file.id,26      versionNum: versionCount + 1,27      storagePath: currentVersion.storagePath,28      size: BigInt(currentVersion.size),29      changeNote: "Before restore",30    },31  });3233  // Restore the selected version34  await restoreVersion(version.storagePath, file.storagePath);3536  // Update file size37  await prisma.file.update({38    where: { id: params.id },39    data: { size: version.size },40  });4142  await logActivity("VERSION_RESTORE", file.id, `Restored to version ${version.versionNum}`);4344  return NextResponse.json({ success: true });45}46